fix(review): address non-blocking review nits across the credibility-gate-farming series - #3615
Conversation
…gate-farming series - unlinked-issue-match.ts: use an ASCII "..." truncation marker instead of a Unicode ellipsis, matching this repo's ASCII-source convention. - unlinked-issue-candidates.ts: drop a duplicate "would" entry in STOPWORDS; switch basename path-mention matching from a raw substring .includes() to an exact path-token match (or a longer path ending in /basename), so a basename like "reader.ts" no longer false-positives inside an unrelated, longer filename such as "csv-reader.ts". - linked-issue-hard-rules.ts: bound resolveLinkedIssueHasOpenReference's per-issue fetch fan-out to the same MAX_LINKED_ISSUE_NUMBERS cap its sibling resolveLinkedIssueHardRule already enforces via its own overflow check, failing open rather than firing an unbounded burst of live fetches for a body citing more references than can be safely verified in one pass. - agent-actions.ts: the stale-disposition-label cleanup loop now precomputes a lowercase Set of the PR's live labels instead of re-scanning the array per candidate, and dedupes defensively so two label settings misconfigured to the identical string only produce one remove action.
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
|
Tip 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 ✅ Gittensory review result - approve/merge recommendedReview updated: 2026-07-05 19:43:49 UTC
✅ Suggested Action - Approve/Merge
Review summary Nits — 5 non-blocking
Review context
Contributor next steps
Signal definitions
🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by Gittensory, a quiet PR intelligence layer for OSS maintainers.
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3615 +/- ##
=======================================
Coverage 93.19% 93.19%
=======================================
Files 313 313
Lines 31874 31882 +8
Branches 11666 11669 +3
=======================================
+ Hits 29705 29713 +8
Misses 1517 1517
Partials 652 652
🚀 New features to boost your workflow:
|
Closes #3613
Summary
Cleans up 6 non-blocking "nits" the gittensory-orb review flagged on #3513 and
#3575 (both already merged) — no functional bugs, just polish left over from
that series:
src/review/unlinked-issue-match.ts:40: replaced the Unicode ellipsis inthe truncated-diff marker with an ASCII
... (diff truncated), matchingthis repo's ASCII-source convention.
src/signals/unlinked-issue-candidates.ts: removed a duplicate"would"entry in
STOPWORDS.src/signals/unlinked-issue-candidates.ts: basename path-mention matching(
issueMentionsChangedPath) now extracts path-like tokens from the issuebody and requires an EXACT token match (or a longer path token ending in
/basename), instead of a raw.includes()substring check — a basenamelike
reader.tsno longer false-positives merely because it's a substringof an unrelated, longer filename such as
csv-reader.ts. The full-pathcheck is untouched (a repo-relative path is already distinctive enough that
a substring match there isn't a realistic false-positive risk).
src/review/linked-issue-hard-rules.ts:resolveLinkedIssueHasOpenReferencenow bails out (fails open, returning
true) oncelinkedIssues.lengthexceeds
MAX_LINKED_ISSUE_NUMBERS, instead of firing an unboundedPromise.allfan-out of live GitHub fetches — reusing the exact cap itssibling
resolveLinkedIssueHardRulealready enforces viaextractLinkedIssueNumbersWithOverflow, rather than adding a second bound.Fails open rather than truncating-and-checking-a-subset, since a partial
check could otherwise wrongly conclude "no open reference" based on data
that never looked at every citation.
src/settings/agent-actions.ts: the stale-disposition-label cleanup loop(added in fix(review): clear stale disposition labels once the underlying hold resolves #3575) now precomputes a lowercase
Setof the PR's live labelsinstead of re-scanning the label array per candidate, and dedupes by
lowercase label string so two settings misconfigured to the identical
string only produce one remove action instead of two.
Scope
type(scope): short summaryConventional Commit format.CONTRIBUTING.md; nosite//CNAME/VitePress changes.Closes #3613.Validation
git diff --checknpm run actionlint— not run; no workflow files touched.npm run typecheck(clean)npm run test:coverage(full/unsharded) — not run locally; ran the specificaffected files instead (
agent-actions.test.ts230 tests,unlinked-issue-candidates.test.ts15,unlinked-issue-match.test.ts18,linked-issue-hard-rules.test.ts53, plus the fullqueue.test.tsintegration suite, 574 tests) — all green. Cross-referenced the exact new-diff
line/branch ranges against a fresh
coverage-final.json(
--coverage.includeper touched file): 100% of the new statements andbranches are covered. GitHub CI runs the full suite/gate on push.
npm run test:workers/npm run build:mcp/npm run test:mcp-pack— not run;nothing in those surfaces touched.
npm run ui:openapi:check/ui:lint/ui:typecheck/ui:build— not run; noAPI/schema or
apps/gittensory-ui/**changes.npm audit --audit-level=moderate— not run; no dependency changes.assertion updated in place, the basename-boundary false-positive case AND
the still-matches-a-longer-path case, the linked-issue fan-out bound (both
over-the-cap and exactly-at-the-cap), the regex-no-match fallback in
issueMentionsChangedPath, and the disposition-label dedupe when twosettings collide on the same string.
If any required check was skipped, explain why:
the full
queue.test.tsintegration suite) rather than a full localtest:ci/test:coverage/npm auditpass, since GitHub CI runs the completegate on push and re-running the whole suite by hand for every change is
redundant.
Safety
touched or exposed.
truncation marker and internal label-action reason strings, not new PR-comment
content).
UI Evidencesection included.